﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
////1.枚举的学习
//enum Color
//{
//	RED,
//	BLUE=5,
//	GREEN,
//};
//enum Sex
//{
//	male,
//	female,
//	secret,
//};
//int main()
//{
//	enum Color color = BLUE;
//	printf("%d\n", RED);
//	printf("%d\n", BLUE);
//	printf("%d\n", GREEN);
//	printf("%d\n", male);
//	return 0;
//}

//#include <stdio.h>
//struct Stu
//{
//	char name[20];//名字
//	int age;//年龄
//	char sex[5];//性别
//	char id[20];//学号
//};
//
//int main()
//{
//	//按照结构体成员的顺序初始化
//	struct Stu s = { "张三", 20, "男", "20230818001" };
//	printf("name: %s\n", s.name);
//	printf("age : %d\n", s.age);
//	printf("sex : %s\n", s.sex);
//	printf("id : %s\n", s.id);
//
//	//按照指定的顺序初始化
//	struct Stu s2 = { .age = 18, .name = "李四", .id = "20230818002", .sex ="女" };
//	printf("name: %s\n", s2.name);
//	printf("age : %d\n", s2.age);
//	printf("sex : %s\n", s2.sex);
//	printf("id : %s\n", s2.id);
//	return 0;
//}


////匿名结构体类型
//struct
//{
//	int a;
//	char b;
//	float c;
//}x; //注意，匿名结构体必须在这里初始化，因为结构体类型不全，后面就无法初始化
//
//struct
//{
//	int a;
//	char b;
//	float c;
//}* ps;
//
//int main()
//{
//	ps = &x;
//	return 0;
//}


////对结构体类型进行重命名
//typedef struct Node
//{
//	int data;
//	struct Node* next;
//}Node;
//
////此时将结构体类型重命名为了Node，以后创建结构体变量的时候就可以 Node s = ..... 等价于 struct Node s = .....
//
////但是不可以出现下列现象
//typedef struct
//{
//	int data;
//	Node* next;
//}Node;

////练习1
//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};
//int main()
//{
//	printf("%d\n", sizeof(struct S1));
//}


////练习2
//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//int main()
//{
//	printf("%d\n", sizeof(struct S2));
//	return 0;
//}


////练习3
//struct S3
//{
//	double d;
//	char c;
//	int i;
//};
//int main()
//{
//	printf("%d\n", sizeof(struct S3));
//	return 0;
//}


//练习4-结构体嵌套问题
struct S3
{
	double d;
	char c;
	int i;
};
struct S4
{
	char c1;
	struct S3 s3;
	double d;
};
int main()
{
	printf("%d\n", sizeof(struct S4));
	return 0;
}